<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class jx_reservas extends CI_Controller {

    private $establecimiento;

    public function __construct() {
        parent::__construct();
        $this->load->model('_reservam');
        session_start();
        $this->establecimiento = $_SESSION["establecimiento"]["id_establecimiento"];
    }

    public function getReporteReserva() {
        if (!empty($_POST)) {
            $query = $this->getQuery($_POST);
            $table = $this->getTable($query);
            echo json_encode($table);
        }
    }

    private function getQuery($data) {
        $str = "";
        if ($data['estatus'] != "") {
            $estatus = explode(",", $data['estatus']);
            $str = "(";
            for ($i = 0; $i < sizeof($estatus) - 1; $i++) {
                if (sizeof($estatus) - 2 == $i) {
                    $str = $str . "'$estatus[$i]'";
                } else {
                    $str = $str . "'$estatus[$i]',";
                }
            }
            $str = $str . ")";
        }

        $this->formatoFechaBD($data['ingresoDesde']);
        $this->formatoFechaBD($data['ingresoHasta']);
        $this->formatoFechaBD($data['creacionDesde']);
        $this->formatoFechaBD($data['creacionHasta']);
        $cliente = strtolower($data['cliente']);

        $cons = "";
        $cons.=($data['habitacion'] == "") ? "" : " rc.id_cuarto={$data['habitacion']} AND ";
        $cons.=($data['estatus'] == "") ? "" : " r.estatus in $str AND ";
//restriccion de INGRESO;
        if ($data['ingresoDesde'] != "" && $data['ingresoHasta'] != "") {
            $cons.="(r.fecha_ingreso)>='{$data['ingresoDesde']}' AND (r.fecha_ingreso)<='{$data['ingresoHasta']}' AND ";
        } else if ($data['ingresoDesde'] != "") {
            $cons.="(r.fecha_ingreso)>='{$data['ingresoDesde']}' AND ";
        } else if ($data['ingresoHasta'] != "") {
            $cons.="(r.fecha_ingreso)<='{$data['ingresoHasta']}' AND ";
        }

//restriccion de CREACION;
        if ($data['creacionDesde'] != "" && $data['creacionHasta'] != "") {
            $cons.="(r.fecha_creacion)>='{$data['creacionDesde']}' AND (r.fecha_creacion)<='{$data['creacionHasta']}' AND ";
        } else if ($data['creacionDesde'] != "") {
            $cons.="(r.fecha_creacion)>='{$data['creacionDesde']}' AND ";
        } else if ($data['creacionHasta'] != "") {
            $cons.="(r.fecha_creacion)<='{$data['creacionHasta']}' AND ";
        }

        $query = "SELECT  r.id_reserva,u.nombre_completo,c.nombre,c.primer_apellido, cu.nombre as cuarto , r.fecha_ingreso, r.fecha_salida, r.estatus, cat.nombre as categoria
                  FROM cliente c, reserva r,reserva_x_cuarto rc,cuarto cu,usuario u,categoria cat
                  WHERE r.id_establecimiento={$this->establecimiento} AND cu.eliminado=0 AND c.id_cliente=r.id_cliente AND 
                  cat.id_categoria=cu.id_categoria AND ( lower(c.nombre) LIKE '%$cliente%' OR lower(c.primer_apellido) LIKE '%$cliente%' )
                  AND r.id_reserva=rc.id_reserva AND rc.id_cuarto=cu.id_cuarto  AND u.id_usuario=r.usuario_creacion 
                  AND $cons TRUE ORDER BY r.fecha_ingreso LIMIT 15 OFFSET " . (($data['pagina'] - 1) * 15);

        //  echo $query;
        return $query;
        // return $query;
    }

    //funcion encargada de crear la tabla con los resultados arrojados 
    public function getTable($query) {
        //   echo $query . "<br>";
        $reservas = $this->_reservam->query($query);
        $query2 = explode("LIMIT", $query);
        $registros = $this->_reservam->query("SELECT count(*) as total FROM ({$query2[0]}) c");
        $i = 0;
        $data = array();
        foreach ($reservas as $reserva) {
            $data[$i]['id_reserva'] = $reserva->id_reserva;
            $data[$i]['nombre'] = $reserva->nombre;
            $data[$i]['primer_apellido'] = $reserva->primer_apellido;
            $data[$i]['cuarto'] = "<em class='text-info'>{$reserva->categoria}: </em>$reserva->cuarto";
            $this->formatoFechaVista($reserva->fecha_ingreso);
            $this->formatoFechaVista($reserva->fecha_salida);
            $data[$i]['fecha_ingreso'] = $reserva->fecha_ingreso;
            $data[$i]['fecha_salida'] = $reserva->fecha_salida;
            if ($reserva->estatus == "provisional") {
                $data[$i]['estatus'] = "Sin pago";
            } else if ($reserva->estatus == "parcial") {
                $data[$i]['estatus'] = "Pago parcial";
            } else if ($reserva->estatus == "completo") {
                $data[$i]['estatus'] = "Pago completo";
            } else if ($reserva->estatus == "fin") {
                $data[$i]['estatus'] = "Hospedaje finalizado";
            }
            $data[$i]['usuario'] = $reserva->nombre_completo;
            $i++;
        }
        $response['reserva'] = $data;
        $response['registros'] = $registros[0]->total;
        //  var_dump($data);
        return $response;
    }

    // FUNCION PARA LOS HUESPEDES
    public function getReporteHuespedes() {
        $nacionales = $this->gethuespedes($_POST, 'nacionales');
        $extranjeros = $this->gethuespedes($_POST, 'extranjeros');
        $total = $nacionales + $extranjeros;
        echo "$nacionales-$extranjeros-$total";
    }

    private function gethuespedes($data, $lugar) {
        $fecha = $this->getRangoFecha($data);
        $pais = ($lugar == "nacionales") ? "c.id_pais = 169 " : "c.id_pais<>169 ";

        $query = "SELECT count(*) as total
FROM reserva r, cliente c
WHERE r.id_cliente = c.id_cliente AND c.id_establecimiento = {$this->establecimiento}
AND r.checkin_realizado = 1 AND $pais AND $fecha TRUE";

        // return $query;

        $n = $this->_reservam->query($query);
        return $n[0]->total;
    }

    //funcion que genera la restriccion de fechas
    private function getRangoFecha($data) {
        $this->formatoFechaBD($data['desde']);
        $this->formatoFechaBD($data['hasta']);
        $cons = "";
        if ($data['desde'] != "" && $data['hasta'] != "") {
            $cons.="(r.fecha_ingreso)>='{$data['desde']}' AND (r.fecha_ingreso)<='{$data['hasta']}' AND ";
        } else if ($data['desde'] != "") {
            $cons.="(r.fecha_ingreso)>='{$data['desde']}' AND ";
        } else if ($data['hasta'] != "") {
            $cons.="(r.fecha_ingreso)<='{$data['hasta']}' AND ";
        }
        return $cons;
    }

}
